[IA64] Fix MCA handling from xen relocation changes
authorAlex Williamson <alex.williamson@hp.com>
Thu, 17 Jan 2008 19:05:43 +0000 (12:05 -0700)
committerAlex Williamson <alex.williamson@hp.com>
Thu, 17 Jan 2008 19:05:43 +0000 (12:05 -0700)
Signed-off-by: Kazuhiro Suzuki <kaz@jp.fujitsu.com>
xen/arch/ia64/linux-xen/mca_asm.S

index f9176d98d53a30bcb15cd644e703b6341d551219..2f25294a0e0fa19b0d23fe010a2ffa347629cd1c 100644 (file)
@@ -482,32 +482,26 @@ ia64_reload_tr:
        // avoid overlapping with xenheap TR
        mov r17=ip
        ;;
-       tpa r17=r17
-       ;;
        dep r17=0,r17,0,KERNEL_TR_PAGE_SHIFT
        ;;
        shr.u r17=r17,IA64_GRANULE_SHIFT
        ;; 
-       GET_THIS_PADDR(r2,cpu_kr);;
-       add r2=IA64_KR_CURRENT_OFFSET,r2;;
-       ld8 r16=[r2];;
+       // Kernel registers are saved in a per_cpu cpu_kr_ia64_t
+       // to allow the kernel registers themselves to be used by domains.
+       GET_THIS_PADDR(r2, cpu_kr);;
+       add r2=IA64_KR_CURRENT_STACK_OFFSET,r2
+       ;;
+       ld8 r16=[r2]
        ;;
 #if KERNEL_TR_PAGE_SHIFT < IA64_GRANULE_SHIFT
 # error "KERNEL_TR_PAGE_SHIFT < IA64_GRANULE_SHIFT shouldn't happen"
 #endif
 #if KERNEL_TR_PAGE_SHIFT > IA64_GRANULE_SHIFT
-       dep  r16=0,r16,0,KERNEL_TR_PAGE_SHIFT-IA64_GRANULE_SHIFT
+       dep  r18=0,r16,0,KERNEL_TR_PAGE_SHIFT-IA64_GRANULE_SHIFT
        ;;
 #endif
-       cmp.eq p7,p0=r17,r16
+       cmp.eq p7,p0=r17,r18
 (p7)   br.cond.sptk    .reload_vhpt
-       
-       // Kernel registers are saved in a per_cpu cpu_kr_ia64_t
-       // to allow the kernel registers themselves to be used by domains.
-       GET_THIS_PADDR(r2, cpu_kr);;
-       add r2=IA64_KR_CURRENT_STACK_OFFSET,r2
-       ;;
-       ld8 r16=[r2]
 #else
        mov r16=IA64_KR(CURRENT_STACK)
 #endif
@@ -535,6 +529,9 @@ ia64_reload_tr:
 #if VHPT_ENABLED
        GET_VA_VCPU_VHPT_MADDR(r2,r3);;
        dep r3=0,r2,0,KERNEL_TR_PAGE_SHIFT
+       ;; 
+       dep r3=0,r3,60,4                // physical address of
+                                       // va_vhpt & ~(KERNEL_TR_PAGE_SHIFT - 1)
        ;;
        shr.u r3=r3,IA64_GRANULE_SHIFT
        ;;